5.12. Встроенные функции в Groovy
Встроенные функции в Groovy
Функции для работы с коллекциями
| Функция | Значение | Пример |
|---|---|---|
collect() | Преобразует каждый элемент коллекции | [1, 2, 3].collect { it * 2 } |
findAll() | Фильтрует элементы по условию | [1, 2, 3, 4].findAll { it > 2 } |
each() | Выполняет действие для каждого элемента | [1, 2, 3].each { println it } |
inject() | Накапливает результат через аккумулятор | [1, 2, 3].inject(0) { sum, num -> sum + num } |
any() | Проверяет, соответствует ли хотя бы один элемент условию | [1, 2, 3].any { it > 2 } |
every() | Проверяет, соответствуют ли все элементы условию | [2, 4, 6].every { it % 2 == 0 } |
groupBy() | Группирует элементы по ключу | [1, 2, 3, 4].groupBy { it % 2 } |
sort() | Сортирует коллекцию | [3, 1, 4, 2].sort() |
reverse() | Разворачивает коллекцию | [1, 2, 3].reverse() |
unique() | Удаляет дубликаты | [1, 2, 2, 3].unique() |
flatten() | Преобразует вложенные коллекции в плоскую | [[1, 2], [3, 4]].flatten() |
sum() | Вычисляет сумму элементов | [1, 2, 3].sum() |
min() | Находит минимальный элемент | [3, 1, 4, 2].min() |
max() | Находит максимальный элемент | [3, 1, 4, 2].max() |
count() | Подсчитывает элементы по условию | [1, 2, 3, 4].count { it > 2 } |
drop() | Удаляет указанное количество элементов с начала | [1, 2, 3, 4].drop(2) |
take() | Берет указанное количество элементов с начала | [1, 2, 3, 4].take(2) |
chunk() | Разбивает коллекцию на части | [1, 2, 3, 4, 5].chunk(2) |
Функции для работы со строками
| Функция | Значение | Пример |
|---|---|---|
trim() | Удаляет пробелы по краям строки | " текст ".trim() |
toUpperCase() | Преобразует строку в верхний регистр | "привет".toUpperCase() |
toLowerCase() | Преобразует строку в нижний регистр | "ПРИВЕТ".toLowerCase() |
replaceAll() | Заменяет все вхождения подстроки | "привет мир".replaceAll("мир", "Groovy") |
split() | Разделяет строку по разделителю | "один,два,три".split(",") |
tokenize() | Разбивает строку на токены | "один два три".tokenize() |
center() | Центрирует строку в заданной ширине | "текст".center(20) |
padLeft() | Добавляет символы слева | "5".padLeft(3, "0") |
padRight() | Добавляет символы справа | "5".padRight(3, "0") |
reverse() | Разворачивает строку | "привет".reverse() |
capitalize() | Делает первую букву заглавной | "привет".capitalize() |
toInteger() | Преобразует строку в целое число | "123".toInteger() |
toDouble() | Преобразует строку в число с плавающей точкой | "123.45".toDouble() |
toBoolean() | Преобразует строку в булево значение | "true".toBoolean() |
encodeBase64() | Кодирует строку в Base64 | "текст".encodeBase64() |
decodeBase64() | Декодирует строку из Base64 | "dGVrdHM=".decodeBase64() |
stripMargin() | Удаляет отступы из многострочной строки | """ текст""".stripMargin() |
stripIndent() | Удаляет общий отступ из строк | """ текст""".stripIndent() |
Функции для работы с файлами
| Функция | Значение | Пример |
|---|---|---|
eachLine() | Читает файл построчно | new File("file.txt").eachLine { line -> println line } |
readLines() | Читает все строки файла в список | new File("file.txt").readLines() |
getText() | Читает содержимое файла как строку | new File("file.txt").getText() |
getText(String charset) | Читает файл с указанием кодировки | new File("file.txt").getText("UTF-8") |
write(String text) | Записывает текст в файл | new File("file.txt").write("текст") |
append(String text) | Добавляет текст в конец файла | new File("file.txt").append("дополнение") |
delete() | Удаляет файл | new File("file.txt").delete() |
renameTo(File dest) | Переименовывает файл | new File("old.txt").renameTo(new File("new.txt")) |
mkdir() | Создает директорию | new File("dir").mkdir() |
mkdirs() | Создает директорию со всеми родительскими | new File("dir/subdir").mkdirs() |
listFiles() | Возвращает список файлов в директории | new File("dir").listFiles() |
eachFile() | Выполняет действие для каждого файла | new File("dir").eachFile { file -> println file } |
eachFileRecurse() | Рекурсивно обходит все файлы | new File("dir").eachFileRecurse { file -> println file } |
exists() | Проверяет существование файла | new File("file.txt").exists() |
isDirectory() | Проверяет, является ли файл директорией | new File("dir").isDirectory() |
isFile() | Проверяет, является ли путь файлом | new File("file.txt").isFile() |
length() | Возвращает размер файла в байтах | new File("file.txt").length() |
lastModified() | Возвращает время последнего изменения | new File("file.txt").lastModified() |
Системные функции
| Функция | Значение | Пример |
|---|---|---|
println() | Выводит текст с переносом строки | println "Привет" |
print() | Выводит текст без переноса строки | print "Привет" |
printf() | Форматированный вывод | printf "Число: %d", 42 |
sleep(long millis) | Приостанавливает выполнение | sleep(1000) |
System.currentTimeMillis() | Текущее время в миллисекундах | System.currentTimeMillis() |
System.getenv(String name) | Получает переменную окружения | System.getenv("PATH") |
System.getProperty(String name) | Получает системное свойство | System.getProperty("user.home") |
Runtime.getRuntime().exec(String cmd) | Выполняет системную команду | Runtime.getRuntime().exec("ls") |
Thread.start() | Запускает новый поток | Thread.start { println "Поток" } |
Thread.join() | Ожидает завершения потока | thread.join() |
synchronized(Object lock) | Синхронизирует блок кода | synchronized(lock) { /* код */ } |
Функции для работы с датами
| Функция | Значение | Пример |
|---|---|---|
new Date() | Создает объект текущей даты | def now = new Date() |
parse(String pattern, String date) | Парсит строку в дату | Date.parse("yyyy-MM-dd", "2024-01-15") |
format(String pattern) | Форматирует дату в строку | new Date().format("yyyy-MM-dd") |
getYear() | Возвращает год | new Date().getYear() |
getMonth() | Возвращает месяц | new Date().getMonth() |
getDate() | Возвращает день месяца | new Date().getDate() |
getHours() | Возвращает часы | new Date().getHours() |
getMinutes() | Возвращает минуты | new Date().getMinutes() |
getSeconds() | Возвращает секунды | new Date().getSeconds() |
plus(int days) | Добавляет дни к дате | new Date() + 7 |
minus(int days) | Вычитает дни из даты | new Date() - 7 |
compareTo(Date other) | Сравнивает две даты | date1.compareTo(date2) |
before(Date other) | Проверяет, раньше ли дата | date1.before(date2) |
after(Date other) | Проверяет, позже ли дата | date1.after(date2) |
clearTime() | Обнуляет время в дате | new Date().clearTime() |
copyWith(Map changes) | Создает копию с изменениями | date.copyWith(year: 2025) |
Функции для работы с числами
| Функция | Значение | Пример |
|---|---|---|
abs() | Абсолютное значение | (-5).abs() |
round() | Округление до ближайшего целого | 3.7.round() |
ceil() | Округление вверх | 3.2.ceil() |
floor() | Округление вниз | 3.8.floor() |
intValue() | Преобразует в целое число | 3.14.intValue() |
longValue() | Преобразует в длинное целое | 3.14.longValue() |
floatValue() | Преобразует в число с плавающей точкой | 3.intValue().floatValue() |
doubleValue() | Преобразует в двойную точность | 3.intValue().doubleValue() |
toInteger() | Преобразует в Integer | "42".toInteger() |
toLong() | Преобразует в Long | "42".toLong() |
toFloat() | Преобразует в Float | "3.14".toFloat() |
toDouble() | Преобразует в Double | "3.14".toDouble() |
times(Closure closure) | Выполняет замыкание указанное количество раз | 3.times { println "Привет" } |
upto(Number to, Closure closure) | Выполняет от текущего числа до указанного | 1.upto(5) { println it } |
downto(Number to, Closure closure) | Выполняет от текущего числа вниз до указанного | 5.downto(1) { println it } |
step(Number to, Number step, Closure closure) | Выполняет с шагом | 1.step(10, 2) { println it } |
Функции для отладки
| Функция | Значение | Пример |
|---|---|---|
dump() | Выводит внутреннюю структуру объекта | obj.dump() |
inspect() | Возвращает строковое представление объекта | obj.inspect() |
toString() | Строковое представление объекта | obj.toString() |
getClass() | Возвращает класс объекта | obj.getClass() |
instanceOf(Class clazz) | Проверяет принадлежность к классу | obj.instanceOf(String) |
asType(Class clazz) | Преобразует объект к указанному типу | obj.asType(String) |
with(Object receiver) | Выполняет код в контексте объекта | obj.with { println name } |
tap(Closure closure) | Выполняет замыкание и возвращает объект | obj.tap { it.name = "test" } |
withTraits(List traits) | Применяет трейты к объекту | obj.withTraits([Trait1, Trait2]) |
Функции для работы с картами (Map)
| Функция | Значение | Пример |
|---|---|---|
get(Object key) | Получает значение по ключу | map.get("key") |
put(Object key, Object value) | Добавляет пару ключ-значение | map.put("key", "value") |
remove(Object key) | Удаляет элемент по ключу | map.remove("key") |
containsKey(Object key) | Проверяет наличие ключа | map.containsKey("key") |
containsValue(Object value) | Проверяет наличие значения | map.containsValue("value") |
keySet() | Возвращает множество ключей | map.keySet() |
values() | Возвращает коллекцию значений | map.values() |
entrySet() | Возвращает множество записей | map.entrySet() |
each(Closure closure) | Выполняет для каждой пары ключ-значение | map.each { k, v -> println "$k=$v" } |
collect(Closure closure) | Преобразует каждую запись | map.collect { k, v -> "$k=$v" } |
findAll(Closure closure) | Фильтрует записи по условию | map.findAll { k, v -> v > 10 } |
any(Closure closure) | Проверяет условие для хотя бы одной записи | map.any { k, v -> v > 10 } |
every(Closure closure) | Проверяет условие для всех записей | map.every { k, v -> v > 0 } |
groupBy(Closure closure) | Группирует записи по ключу | map.groupBy { k, v -> v % 2 } |
sort(Closure closure) | Сортирует записи | map.sort { a, b -> a.value <=> b.value } |
subMap(Collection keys) | Создает подкарту с указанными ключами | map.subMap(["key1", "key2"]) |
plus(Map other) | Объединяет две карты | map1 + map2 |
minus(Object key) | Удаляет ключ из карты | map - "key" |